﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevComponents.DotNetBar;
using BussinessEntity;
using Equin.ApplicationFramework;
using Utilities;
using BussinessLayer;

namespace PresentationLayer
{
    public partial class frmImport : DevComponents.DotNetBar.OfficeForm
    {
        private List<ImportDetail> ListCT;
        private bool IsAdd;
        public Import PhieuNhapMoi { get; set; }

        public frmImport()
        {
            InitializeComponent();
            ListCT = new List<ImportDetail>();
            IsAdd = true;
            btnSubmit.Text = "Thêm";
            txtMaPN.Text = ImportManager.NextID();
            Text = "Thêm phiếu nhập";
        }

        bool CheckValidated()
        {
            if (txtTenNCC.Text == "")
            {
                txtTenNCC.Focus();
                return false;
            }
            if (txtDiaChi.Text == "")
            {
                txtDiaChi.Focus();
                return false;
            }
            if (dtpNgayNhan.Value == DateTime.MinValue||dtpNgayNhan.Value > DateTime.Today)
            {
                dtpNgayNhan.Focus();
                return false;
            }
            return true;
        }

        public frmImport(string MaPN)
        {
            InitializeComponent();
            PhieuNhapMoi = ImportManager.GetSingle(MaPN).Object;
            ListCT = PhieuNhapMoi.ListDetails;
            CapNhatDSCT(ListCT);
            IsAdd = false;
            btnSubmit.Text = "Cập nhật";
            txtMaPN.Text = MaPN;
            Text = "Cập nhật phiếu nhập";
        }

        private void cậpNhậtChiTiếtToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frmImportDetail frm = new frmImportDetail(ListCT, new CapNhatDSPN(CapNhatDSCT));
            frm.ShowDialog();
        }

        void CapNhatDSCT(List<ImportDetail> ds)
        {
            dgvImportDetail.AutoGenerateColumns = false;
            dgvImportDetail.DataSource = new BindingListView<ImportDetail>(ds);
            txtTongTien.Text = DataUtil.ChangeMoneyToString(ImportManager.Total(ListCT));
        }

        Import GetInformation()
        {
            Import pn = new Import();
            pn.SupplierAddress = txtDiaChi.Text.Trim();
            pn.ImportDate = dtpNgayNhan.Value;
            pn.SupplierName = txtTenNCC.Text.Trim();
            pn.ImportID = txtMaPN.Text.Trim();
            pn.ListDetails = ListCT;
            foreach (var l in pn.ListDetails)
                l.Import = ImportManager.GetSingle(pn.ImportID).Object;
            return pn;
        }

        private void btnSubmit_Click(object sender, EventArgs e)
        {
            if (CheckValidated())
            {
                Import hd = GetInformation();
                if (IsAdd)
                {
                    ActionResult<Import> rs = ImportManager.Insert(hd);
                    if (rs.Success)
                    {
                        PhieuNhapMoi = hd;
                        MessageBox.Show("Thêm thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        Close();
                    }
                    else
                        MessageBox.Show(rs.ToString(), "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    ActionResult<Import> rs = ImportManager.Update(hd);
                    if (rs.Success)
                    {
                        MessageBox.Show("Cập nhật thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        Close();
                    }
                    else
                        MessageBox.Show(rs.ToString(), "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
                MessageBox.Show("Nhập thiếu thông tin!!!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        }

        private void btnThoat_Click(object sender, EventArgs e)
        {
            PhieuNhapMoi = null;
            Close();
        }

        private void xóaChiTiếtToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (dgvImportDetail.SelectedRows.Count > 0)
            {
                if (MessageBox.Show("Bạn có chắc chắn xóa không?", "Xác nhận", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    var ct = ListCT.Find(s => s.ServiceID == DataUtil.ToString(dgvImportDetail.SelectedRows[0].Cells["MaDV"].Value));
                    if (ct != null)
                    {
                        ListCT.Remove(ct);
                        CapNhatDSCT(ListCT);
                    }
                }
            }
            else
                MessageBox.Show("Bạn phải chọn một dòng thông tin để xóa!!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        }

        private void frmImport_Load(object sender, EventArgs e)
        {
            if (!IsAdd)
            {
                txtTenNCC.Text = PhieuNhapMoi.SupplierName;
                txtDiaChi.Text = PhieuNhapMoi.SupplierAddress;
                txtMaPN.Text = PhieuNhapMoi.ImportID;
                dtpNgayNhan.Value = PhieuNhapMoi.ImportDate;
                ListCT = PhieuNhapMoi.ListDetails;
                CapNhatDSCT(ListCT);
            }
            else
            {
                dtpNgayNhan.Value = DateTime.Today;
            }
        }
    }
}